const express = require("express");
let app = express();
let news = require("./news.json");
const fs = require("fs");
// const { type } = require("os");
// let news =  JSON.parse( fs.readFileSync("./news.json"));
// console.log(news);
// 显示新闻列表的路由
app.get("/list", (req, res) => {
  // 初始化的时候 页码 应该是在 1;
  let perP; // 当前的页码 ；
  let { p } = req.query;
  if (typeof p === "undefined") {
    perP = 1;
  } else {
    perP = p;
  }

  /* 
        页码 1 ： 0  ，   5 
        页码 2 ： 5 ，    5；
        页码  3 ：10，    5
        页码 n ： (n-1)*5 ,5 
    */
  let resdata = news.map((item) => item).splice((perP - 1) * 5, 5);
  console.log(resdata);

  // 根据news数据显示新闻列表
  let str = "<ul>";
  resdata.forEach((item) => {
    // querystring带参 携带 id（唯一标识符） ；
    // str += `<li> <a href="/showDetail/${item.id}">${item.title}</a></li>`;
    str += `<li> <a href="/showDetail?id=${item.id}">${item.title}</a></li>`;
  });
  str += "</ul >";

  // 显示页码 ：
  // 页码 是根据数据的条数 计算；
  let count = Math.ceil(news.length / 5); // 向上取整；
  console.log(count);
  // 根据count 生成 页码
  for (let i = 1; i <= count; i++) {
    str += `<a href="/list?p=${i}">${i}</a> `;
  }

  // 显示新闻列表
  res.send(str);
  // 1.send 组装字符串 2.加载news.html: 没办法获取数据 ？方式一 通过nodejs服务器把数据推送到 news.html里  ssr: server send render。seo 优化. 方式二： news.html里通过js 里的ajax 来获取数据；
});

// 实现新闻详细
app.get("/showDetail", (req, res) => {
  // 接收id 的值 ；
  let { id } = req.query; // querystring 接收的数字是字符串类型
  // console.log(typeof id);
  // 根据id 来查找具体是哪条数据
  let detaildata = news.find((item) => item.id == id);
  // console.log(detaildata);
  let showhtml = `<h1>${detaildata.title}</h1><p>${detaildata.content}</p>`;
  res.send(showhtml);
});

app.listen(8989);
